package com.nkzy.domain.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//统一结果返回类：类中有属性、方法
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    //三个属性：状态码，提示信息，数据，都使用private表示对属性私有化，封装性
    //面向对象编程三大特性：封装性、继承性、多态性
    //构造方法的作用：创建对象
    //构造方法：无参构造，有参构造，默认是无参构造，（无参构造方法、有参构造方法成为方法的重载）
    //方法的重载：同一个类中，方法名相同，参数个数不同，或者类型可以不同
    private String code;//状态码
    private String message;//提示信息
    private Object data;//数据
    //@Override:重写父类方法，Java所有类都有Object类，所有类都继承Object类
    //类是抽象的，对现实世界的抽象，比如：用户、商品、订单、地址、地址簿、用户地址、用户地址簿、
    //用类创建的对象，称为对象，对象是具体的
    //java数据类型：基本数据类型（简单数据类型）、引用数据类型（复杂数据类型）
    //基本数据类型：int、double、char、boolean、long、float、byte
    //引用数据类型：字符串、数组、对象、类、接口、枚举、
    //引用类型的数据：一般都提供了一些方法,便于我们进行操作。
    //在定义类的属性时，尽量使用引用类型
    //为了后续操作方法
    //静态方法：不需要创建对象，直接类名.方法名()调用

    public static Result success(){
        return new Result("200","操作成功",null);
    }
    //静态方法：返回成功，并携带数据，用于查询
    public static Result success(Object data){
        return new Result("200","操作成功",data);
    }
    //静态方法：返回失败，并携带信息
    public static Result error(String message){
        return new Result("400",message,null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code='" + code + '\'' +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}







